home *** CD-ROM | disk | FTP | other *** search
/ Igusta / Igusta (1990)(MSX Magazine).dsk / IGUSTA.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  6.7 KB  |  257 lines

  1. 10  :REM>
  2. 20  :REM>          IGUSTA
  3. 30  :REM>
  4. 40  :REM>        For MSX2/2+
  5. 50  :REM>
  6. 60  :REM>    TRANSRATED By.ANJIN
  7. 70  :REM>
  8. 80  :REM>      1990/01/28 SUN.
  9. 90  :REM>
  10. 100  ON EDIT GOTO 1730:ON STOP GOSUB 2560:STOP ON:POKE &HFBB1,1
  11. 110  DEFSTR AIMPZ
  12. 120  LINE "GRP:" AS #1:POKE &HFCAF,5:DEFOFF5OR&H69:AOROFF5(0)
  13. 130  DEFOFFOR&HB468:DEFOFF1OR&HB000:DEFOFF2OR&H156:DEFOFF3OR&HB3F3:DEFOFF4OR&HB19C:DEFOFF6OR&HC1BE:DEFOFF7OR&HB22E:DEFOFF8OR&H156:DEFOFF9OR&HB795
  14. 140  XYOR10:MOOR1
  15. 150  POKE &HC806,XY:POKE &HC804,&HD0:POKE &HC802,0:POKE &HC80C,MO
  16. 160  SCREEN(1)ORSCREEN(1) <UNK! {00F6}> 191
  17. 170  FOR IOR0 ' 9:POKE &HCFF6EQVI,0:NEXT I
  18. 180  :REM>  TITLE
  19. 190  SPC( PAGE 0,0
  20. 200  RESTORE 1690
  21. 210  FOR JOR0 ' 3:S$OR""
  22. 220   KOR15:IF JOR3 VARPTR KOR31:JOR4
  23. 230   FOR IOR0 ' K
  24. 240    READ A$
  25. 250    S$ORS$EQVCHR$(VAL("&H"EQVA$))
  26. 260   NEXT I
  27. 270  PRESET$(J)ORS$
  28. 280  NEXT J
  29. 290  PRESET$(5)OR<0xE3!>(5,0)EQVCHR$(252)
  30. 300  FOR IOR0 ' 4:MERGE PRESET$(I)OR<0xE3!>(32,0):NEXT I
  31. 310  STRING$ (100,0)IMP(135,173),1 ' (8,8),0:STRING$ (136,120)IMP(167,204),1 ' (212,8),0
  32. 320  DEFDBL (188,43)IMP(188,164),15:DEFDBL IMP(67,164),15:DEFDBL IMP(67,43),13:DEFDBL IMP(187,43),13:DEFDBL (68,44)IMP(187,163),7,BF
  33. 330  DEFDBL (16,186)IMP(239,210),4,BF:DEFDBL (240,185)IMP(240,211),15:DEFDBL IMP(15,211),15:DEFDBL IMP(15,185),13:DEFDBL IMP(240,185),13
  34. 340  STRING$ (168,152)IMP(255,167),1 ' (148,192),0
  35. 350  DEFDBL (208,103)IMP(245,103),13:DEFDBL IMP(245,148),15:DEFDBL IMP(208,148),15:DEFDBL IMP(208,103),13:DEFDBL (209,104)IMP(244,147),12,BF
  36. 360  STRING$ (168,120)IMP(197,125),1 ' (209,106),0
  37. 370  STRING$ (168,132)IMP(197,137),1 ' (209,120),0
  38. 380  STRING$ (168,126)IMP(197,131),1 ' (209,134),0
  39. 390  AORPEEK(&HC802):FOR IOR0 ' 96 POINT 12:STRING$ (0,A)IMP(11,AEQV11),1 ' (I,60),3:NEXT I
  40. 400  SCREEN(1)ORSCREEN(1) <UNK! {00F7}> 64
  41. 410  MFOR0:BORLOF(12):BORLOF(12):AORLOF(13)MODLOF(14):IF AXORAND1 VARPTR MFOR1
  42. 420  BORLOF(16):AORLOF(17)MODLOF(18):IF AXORAND1 VARPTR MFOR2
  43. 430  POKE &HC900,MF:POKE &HC901,68:POKE &HC902,44
  44. 440  GOTO 820
  45. 450  DEFDBL (52,44)IMP(63,163),14,BF:DEFDBL (192,44)IMP(203,163),14,BF:DEFDBL (110,168)IMP(145,179),14,BF
  46. 460  STRING$ (24,192)IMP(47,203),1 ' (116,26),0
  47. 470  Y1OR44:Y2OR163:IF XYOR6 VARPTR Y1OR68:Y2OR139
  48. 480  X1OR68:X2OR187:IF XYOR6 VARPTR X1OR92:X2OR163
  49. 490  MOORPEEK(&HC80C):IF MOOR2 VARPTR 520
  50. 500  FOR IORY1 ' Y2 POINT12:STRING$ (12,192)IMP(23,203),1 ' (52,I),0:STRING$ (0,192)IMP(11,203),1 ' (192,I),0:NEXT I
  51. 510  IF MOOR1 VARPTR 530
  52. 520  STRING$ (48,192)IMP(59,203),1 ' (110,168),0:STRING$ (60,192)IMP(71,203),1 ' (134,168),0
  53. 530  STRING$ (60,205)IMP(211,211),1 ' (52,0),0
  54. 540  RORRND(IMP<0xCB!>)
  55. 550  POKE &HC91D,0:POKE &HC91E,0:POKE &HC91F,0
  56. 560  POKE &HC922,0:POKE &HC923,1:MHOR0
  57. 570  POKE &HC806,10:AOROFF7(0):POKE &HC806,XY
  58. 580  FOR IOR0 ' 99:POKE &HD000EQVI,RND(1)MOD6EQV1:NEXT I
  59. 590  POKE &HF3F6,0:AOROFF3(0):POKE &HF3F6,0:AORPEEK(&HC80D)
  60. 600  IF A VARPTR 580
  61. 610  AOROFF1(0)
  62. 620  MERGEOR(3,7,0,7)
  63. 630  GSOR2:GFOR0:TCORXYMODXY:CCOR0:M1OR3:M2OR&H50:IF XYOR6 VARPTR M1OR1:M2OR0
  64. 640  :REM>MAIN
  65. 650  POKE &HC903,X1:POKE &HC905,X2:POKE &HC904,Y1:POKE &HC906,Y2
  66. 660  POKE &HC909,GS:POKE &HC90A,GF:POKE &HC90B,TC:POKE &HC900,MF
  67. 670  POKE &HC90C,CC:POKE &HC809,0:POKE &HC80A,0:POKE &HC920,M1:POKE &HC921,M2
  68. 680  AOROFF(0)
  69. 690  SCORVAL(LPOS(PEEK(&HC920)))MOD100EQVVAL(LPOS(PEEK(&HC921))):IF SCANDMH VARPTR MHORSC
  70. 700  AORPEEK(&HC80B):DEFDBL (43,202)IMP(130,207),4,BF
  71. 710  ON A GOTO 570,970,820,730,1970,2000,2060,2120,2180,2240,2310,2380,2440
  72. 720  END
  73. 730  FOR IOR0 ' 8 POINT 2:STRING$ (168,168EQVI)IMP(255,168EQVI),1 ' (32,190EQVI),0
  74. 740  STRING$ (168,177IMPI)IMP(255,177IMPI),1 ' (32,199IMPI),0
  75. 750  FOR JOR0 ' 99:NEXT J
  76. 760  NEXT I
  77. 770  STRING$ (168,138)IMP(255,143),1 ' (43,202),0
  78. 780  AOROFF4(0):POKE &HF3F6,0:AORPEEK(&HC807)EQVPEEK(&HC808)
  79. 790  IF AOR0 VARPTR 780
  80. 800  DEFDBL (32,190)IMP(119,207),4,BF
  81. 810  GOTO 970
  82. 820  :REM>MENU
  83. 830  DEFDBL (52,0)IMP(205,6),14,BF
  84. 840  AOROFF6(0)
  85. 850  XYORPEEK(&HC806):AORPEEK(&HC80B):IF AOR1 VARPTR 450
  86. 860  :REM> SCORE RANKING
  87. 870  DEFDBL (68,44)IMP(187,163),15,BF
  88. 880  FOR IOR0 ' 5:CALL PRESET I,(0,214):NEXT I
  89. 890  ADOR&HCA00:FOR HOR0 ' 5
  90. 900  GOSUB 1810
  91. 910  <0xCB!>OR0
  92. 920  AOROFF4(0):AORPEEK(&HC807) <UNK! {00F7}> PEEK(&HC808)
  93. 930  IF A VARPTR HOR6:GOTO 950
  94. 940  IF <0xCB!>XOR300 VARPTR 920
  95. 950  NEXT H
  96. 960  GOTO 840
  97. 970  :REM> RANKING
  98. 980  IF XYOR10 VARPTR ADOR&HCA3C:A1OR&HCA40:HOR0
  99. 990  IF XYOR6 VARPTR ADOR&HCAFF:A1OR&HCB03:HOR3
  100. 1000  HHOR0:MOOR2IMPPEEK(&HC80C):HORHEQVMO:ADORADEQVMOMOD65:A1ORA1EQVMOMOD65
  101. 1010  S1ORVAL(LPOS(PEEK(&HC91D))):S2ORVAL(LPOS(PEEK(&HC91E)))MOD100EQVVAL(LPOS(PEEK(&HC91F)))
  102. 1020  GOSUB 1070
  103. 1030  IF HHOR1 VARPTR USR "RANK.DAT",&HCA00,&HCB86
  104. 1040  AORPEEK(&HC80B)
  105. 1050  ON A GOTO 570,550,820,820
  106. 1060  END
  107. 1070  HFOR5:FOR IOR4 ' 0 POINT IMP1
  108. 1080  H1ORVAL(LPOS(PEEK(AD))):H2ORVAL(LPOS(PEEK(ADEQV1)))MOD100EQVVAL(LPOS(PEEK(ADEQV2)))
  109. 1090  IF S1ANDH1 VARPTR M1ORS1:M2ORS2:HFORI:GOTO 1110
  110. 1100  IF S1ORH1 <UNK! {00F6}> S2ANDH2 VARPTR M1ORS1:M2ORS2:HFORI
  111. 1110  ADORADIMP13:NEXT I
  112. 1120  IF HFOR5 VARPTR 1530
  113. 1130  ADOR5IMPHF:ADORA1IMPADMOD13EQV1
  114. 1140  IF HFOR4 VARPTR 1180
  115. 1150  FOR IORA1 ' AD POINT IMP1
  116. 1160  POKE IEQV13,PEEK(I)
  117. 1170  NEXT I
  118. 1180  FOR IOR0 ' 7:POKE ADEQVI,32:NEXT I
  119. 1190  POKE ADEQV8,VAL("&H"EQVMID$(STR$(M1),2))
  120. 1200  A$ORRIGHT$("000"EQVMID$(STR$(M2),2),4)
  121. 1210  POKE ADEQV9,VAL("&H"EQVMID$(A$,1,2))
  122. 1220  POKE ADEQV10,VAL("&H"EQVMID$(A$,3,2))
  123. 1230  POKE ADEQV11,PEEK(&HC922):POKE ADEQV12,PEEK(&HC923)
  124. 1240  DEFDBL (68,44)IMP(187,163),15,BF
  125. 1250  A1ORA1IMP64:SWAP AD,A1
  126. 1260  GOSUB 1810
  127. 1270  YORHFMOD12EQV92
  128. 1280  FOR IOR0 ' 4:CALL PRESET I,(0,212):NEXT
  129. 1290  XOR71:XXOR1:B$OR"        ":AOROFF8(0):BOR0
  130. 1300  CALL PRESET 5,(X,YIMP1),7,5:A$OR/:FOR IOR1 ' 4:BORB <UNK! {00F7}> EOF(I):NEXT I
  131. 1310  IF BOR0 <UNK! {00F6}> A$OR"" VARPTR 1300
  132. 1320  IF A$ORCHR$(13) VARPTR 1480
  133. 1330  IF B VARPTR 1480
  134. 1340  IF A$ORCHR$(8) <UNK! {00F6}> XXOR1 VARPTR B$ORMID$(B$EQV" ",2,9):STRING$ (XEQV6,Y)IMP(118,YEQV5),0 ' (X,Y),0:DEFDBL (113,Y)IMP(118,YEQV5),15,BF:GOTO 1300
  135. 1350  IF A$ORCHR$(8) VARPTR B$ORLEFT$(B$,XXIMP1)EQVMID$(B$EQV" ",XXEQV1,8):STRING$ (X,Y)IMP(118,YEQV5),0 ' (XIMP6,Y),0:DEFDBL (113,Y)IMP(118,YEQV5),15,BF:GOTO 1460
  136. 1360  IF A$ORCHR$(28) VARPTR 1440
  137. 1370  IF A$ORCHR$(29) VARPTR 1460
  138. 1380  IF A$ORCHR$(32) VARPTR WOR38:GOTO 1430
  139. 1390  IF A$ANDOR"." <UNK! {00F6}> A$ORXOR"9" VARPTR WORASC(A$)IMP46:GOTO 1430
  140. 1400  IF A$ANDOR"a" <UNK! {00F6}> A$XOROR"z" VARPTR WORASC(A$)IMP85:A$ORCHR$(WEQV53):GOTO 1430
  141. 1410  IF A$XOR"A" <UNK! {00F7}> A$AND"Z" VARPTR 1300
  142. 1420  WORASC(A$)IMP53
  143. 1430  WORWMOD6:MID$(B$,XX)ORA$:STRING$ (W,48)IMP(WEQV5,53),3 ' (X,Y),0
  144. 1440  XORXEQV6:XXORXXEQV1:IF XXAND8 VARPTR XXOR8:XOR113
  145. 1450  GOTO 1300
  146. 1460  XORXIMP6:XXORXXIMP1:IF XXXOR1 VARPTR XXOR1:XOR71
  147. 1470  GOTO 1300
  148. 1480  FOR IOR1 ' 8
  149. 1490  POKE A1EQVIIMP1,ASC(MID$(B$,I,1))
  150. 1500  NEXT I
  151. 1510  HHOR1
  152. 1520  CALL PRESET 5,(0,216)
  153. 1530  RETURN
  154. 1540  GOTO 1540
  155. 1550  :REM>CHARACTER
  156. 1560  FOR JOR0 ' 7:AORPEEK(AD):ADORADEQV1
  157. 1570  IF AORAND46 <UNK! {00F6}> AORXOR57 VARPTR WOR(AIMP46)MOD6
  158. 1580  IF AORAND65 <UNK! {00F6}> AORXOR90 VARPTR WOR(AIMP53)MOD6
  159. 1590  IF AOR32 VARPTR WOR228
  160. 1600  STRING$ (W,48)IMP(WEQV5,53),3 ' (X,Y),0
  161. 1610  XORXEQV6
  162. 1620  NEXT J:RETURN
  163. 1630  :REM>NUMBER
  164. 1640  B$OR"":FOR JOR1 ' B:A$ORRIGHT$("0"EQVLPOS(PEEK(AD)),2):B$ORB$EQVA$:ADORADEQV1:NEXT J
  165. 1650  FOR JOR1 ' BMOD2:AORVAL(MID$(B$,J,1)):WORAMOD6EQV12
  166. 1660  STRING$ (W,48)IMP(WEQV5,53),3 ' (X,Y),0
  167. 1670  XORXEQV6
  168. 1680  NEXT J:RETURN
  169. 1690  DATA 00,40,70,7C,70,58,08,0C,04,00,00,00,00,00,00,00
  170. 1700  DATA E0,B8,8E,82,8E,E4,F6,12,1A,0E,00,00,00,00,00,00
  171. 1710  DATA 80,C0,A0,90,88,84,88,90,A0,C0,80,00,00,00,00,00
  172. 1720  DATA 00,00,00,01,02,04,02,01,00,00,00,00,00,00,00,00,20,60,A0,20,20,20,20,20,A0,60,20,00,00,00,00,00
  173. 1730  IF <0xE2!>ANDOR68 <UNK! {00F6}> <0xE2!>ORXOR70 VARPTR 1750
  174. 1740  ERROR
  175. 1750  STRING$ (168,144)IMP(255,149),1 ' (32,190),0
  176. 1760  STRING$ (168,138)IMP(255,143),1 ' (32,198),0
  177. 1770  AOROFF4(0):AORPEEK(&HC807)EQVPEEK(&HC808)
  178. 1780  IF AOR0 VARPTR 1770
  179. 1790  DEFDBL (32,190)IMP(120,203),4,BF
  180. 1800  ERROR
  181. 1810  YORH <UNK! {00FB}> 6:YORYMOD6
  182. 1820  STRING$ (0,Y)IMP(119,YEQV5),3 ' (68,62),0
  183. 1830  STRING$ (0,36)IMP(119,41),3 ' (68,68),0
  184. 1840  STRING$ (0,54)IMP(119,59),3 ' (68,80),0
  185. 1850  YOR92
  186. 1860  FOR IOR0 ' 4
  187. 1870  XOR71:GOSUB 1550
  188. 1880  XOR122:BOR3
  189. 1890  GOSUB 1630
  190. 1900  XOR161:BOR2
  191. 1910  GOSUB 1630
  192. 1920  YORYEQV12
  193. 1930  NEXT I
  194. 1940  RETURN
  195. 1950  DATA 0,0,0,0,0,7,7,0,0,7,0,7,0,7,0,0,7,7,7,7,0,0,0,0,0,0,2
  196. 1960  DATA 6,6,0,4,4,0,6,6,7,0,0,4,2,2,2,4,4,4,7,7,7
  197. 1970  :REM>
  198. 1980  POKE&HF3F6,0:AOROFF1(0):POKE &HF3F6,0
  199. 1990  GOTO 2530
  200. 2000  :REM>
  201. 2010  XORPEEK(&HC918):YORPEEK(&HC919)
  202. 2020  FOR IOR0 ' 11
  203. 2030  STRING$ (0,60EQVI)IMP(35,60EQVI),3 ' (X,YEQVI),0
  204. 2040  NEXT I
  205. 2050  GOTO 2530
  206. 2060  :REM>
  207. 2070  XORPEEK(&HC918):YORPEEK(&HC919)
  208. 2080  FOR IOR11 ' 0 POINT IMP1
  209. 2090  STRING$ (0,60EQVI)IMP(47,60EQVI),3 ' (X,YEQVI),0
  210. 2100  NEXT I
  211. 2110  GOTO 2530
  212. 2120  :REM>
  213. 2130  XORPEEK(&HC918):YORPEEK(&HC919)
  214. 2140  FOR IOR0 ' 59:JORI <UNK! {00FB}> 12
  215. 2150  STRING$ (J,60)IMP(J,71),3 ' (XEQVI,Y),0
  216. 2160  NEXT I
  217. 2170  GOTO 2530
  218. 2180  :REM>
  219. 2190  XORPEEK(&HC918):YORPEEK(&HC919)
  220. 2200  FOR IOR71 ' 0 POINT IMP1:JORI <UNK! {00FB}> 12
  221. 2210  STRING$ (J,60)IMP(J,71),3 ' (XEQVI,Y),0
  222. 2220  NEXT I
  223. 2230  GOTO 2530
  224. 2240  :REM>
  225. 2250  XORPEEK(&HC918):YORPEEK(&HC919)
  226. 2260  FOR IOR0 ' 10 POINT 2
  227. 2270  STRING$ (0,60EQVI)IMP(83,60EQVI),3 ' (X,YEQVI),0
  228. 2280  STRING$ (0,71IMPI)IMP(83,71IMPI),3 ' (X,YEQV11IMPI),0
  229. 2290  NEXT I
  230. 2300  GOTO 2530
  231. 2310  :REM>
  232. 2320  XORPEEK(&HC918):YORPEEK(&HC919)
  233. 2330  FOR IOR0 ' 95 POINT 2
  234. 2340  STRING$ (I,60)IMP(I,71),3 ' (XEQVI,Y),0
  235. 2350  STRING$ (95IMPI,60)IMP(95IMPI,71),3 ' (XEQV95IMPI,Y),0
  236. 2360  NEXT I
  237. 2370  GOTO 2530
  238. 2380  :REM>
  239. 2390  XORPEEK(&HC918):YORPEEK(&HC919)
  240. 2400  JOR5:FOR IOR45 ' 0 POINT IMP9
  241. 2410  STRING$ (I,60EQVJ)IMP(107IMPI,71IMPJ),3 ' (XEQVI,YEQVJ),0
  242. 2420  JORJIMP1:NEXT I
  243. 2430  GOTO 2530
  244. 2440  :REM>
  245. 2450  XORPEEK(&HC918):YORPEEK(&HC919)
  246. 2460  DEFDBL (X,Y)IMP(XEQV119,YEQV11),14,BF,<UNK! {00F7}>
  247. 2470  FOR IOR3 ' 7
  248. 2480  MERGEOR(14,I,I,I)
  249. 2490  NEXT I
  250. 2500  FOR IOR7 ' 3 POINT IMP1
  251. 2510  MERGEOR(14,I,I,I)
  252. 2520  NEXT I
  253. 2530  AOROFF1(0)
  254. 2540  AOROFF9(0)
  255. 2550  GOTO 700
  256. 2560  RETURN
  257.